<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>封装队列</title>
</head>
<body>
<script>
    //封装队列类
    function Queue() {
        // 属性
        this.item = [];

        /*方法*/
        //1.将元素加入到队列中
        Queue.prototype.enqueue = function (element) {
            this.item.push(element)
        };

        //2.队列中删除元素
        Queue.prototype.dequeue = function () {
            return this.item.shift()
        };

        // 3.查看前端元素
        Queue.prototype.front = function () {
            return this.item[0];
        };

        // 4.查看队列是否为空
        Queue.prototype.isEmpty = function () {
            return this.item.length === 0
        };

        // 5.查看队列中元素个数
        Queue.prototype.size = function () {
            return this.item.length
        };

        // 6. toString方法
        Queue.prototype.toString = function () {
            let resultString = '';
            for(let i = 0; i < this.item.length; i++) {
                resultString +=this.item[i] + ','
            }
            return resultString
        };

        //面试题：击鼓传花
        function passGame() {
            // 1.创建一个队列结构
            let queue = new Queue(nameList, num);
            // 2.将所有人依次加入到队列
            for (let i =0; i < nameList.length; i++) {
                queue.enqueue(nameList[i]);
            }

            // 3.开始数数字
            while(queue.size() > 1) {
                // 让数到num这个数的人排在队列最前面
                for (let i = 0; i < num - 1; i++) {
                    queue.enqueue(queue.dequeue())
                }
                // 数num对应的这个人出列
                queue.dequeue()
            }

            return queue.front();
        }
    }
</script>
</body>
</html>